package nc.gk.gkxm.controller.api;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import nc.gk.gkxm.model.dto.SortDto;
import nc.gk.gkxm.model.vo.SortVO;
import nc.gk.gkxm.model.vo.TopicVO;
import nc.gk.gkxm.service.SortService;
import nc.gk.gkxm.utils.Result;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.List;

@Api(tags = "分类提供小程序接口")
@RestController
@RequestMapping("/gkxm/api/sort")
public class SortController {
    @Resource
    private SortService sortService;

    /**
     *
     * @param sortDto   父节点id
     * @return  List<SortVO>
     */
//    get请求不能使用@RequestBody
    @ApiOperation("得到所有分类")
    @GetMapping("query")
    public Result getAllSort(SortDto sortDto){
        try{
            List<SortVO> data=sortService.getAllSort(sortDto);
            return Result.ok(data);
        }catch (Exception e){
            return Result.fall(5001,"不存在此分类，请联系管理员或重新加载数据");
        }
    }

    /**
     * 保存分类
     * @param sortDto   类型名字    父节点id
     * @return
     */
    @ApiOperation("保存分类")
    @PostMapping("insert")
    public Result insert(@RequestBody SortDto sortDto){
        try {
            sortService.saveSoft(sortDto);
            return Result.ok("保存成功");
        }catch (Exception e){
            return Result.fall(5002, "保存失败");
        }

    }

    /**
     * 修改分类
     * @param sortDto
     * @return
     */
    @ApiOperation("修改分类")
    @PostMapping("update")
    public Result update(@RequestBody SortDto sortDto) {
        try {
            sortService.updateSort(sortDto);
            return Result.ok("修改成功");
        } catch (Exception e) {
            return Result.fall(5003, "修改失败");
        }
    }
    /**
     * 通过类型获取试题接口
     * @param sortId 类型id
     * @return
     */
    @ApiOperation("通过类型获取试题接口")
    @GetMapping("/{sortId}")
    public Result getTopics(@PathVariable("sortId")Integer sortId) {
        try {
            List<TopicVO> data = sortService.getTopicsBySorttId(sortId);
            return Result.ok(data);
        } catch (Exception e) {
            return Result.fall(5001, "查找对应的类型试题失败");
        }
    }
}
